// Copyright (c) 2025, 大连理工大学 (Dalian University of Technology)
//
// Licensed under the Mulan PSL v2.
// You can use this file according to the terms and conditions of the Mulan PSL v2.
// You may obtain a copy of the License at
//
//     http://license.coscl.org.cn/MulanPSL2
//
// THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
// EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. SEE THE MULAN PSL v2
// FOR MORE DETAILS.

#include "DBManager/Service/Input/Constraint/TEMPDService.h"

#include <algorithm>
#include <cassert>
#include <cstddef>
#include <vector>

#include "DataStructure/Common/Id.h"
#include "DataStructure/Common/Out.h"
#include "DataStructure/Common/Status.h"
#include "DataStructure/Input/Constraint/TEMPDData.h"

#include "DBManager/Common/ServiceMacro.h"
#include "DBManager/IRepository/Input/Constraint/ITEMPDRepository.h"
#include "DBManager/Service/Input/Constraint/ConstraintSummaryService.h"

using namespace SG::DBManager;

// 注册服务
SERVICE_REG_IMPL1 (TEMPDService, ITEMPDRepository)

SERVICE_REG_SET_SUMMARY (TEMPDService, ConstraintSummaryService)
TEMPDService::TEMPDService (ITEMPDRepository& repos) : m_repository (repos)
{}

std::size_t TEMPDService::Size ()
{
    return m_repository.Size ();
}

SG::DataStructure::Common::Status TEMPDService::FindByIndex (std::size_t index, SG::DataStructure::FEM::TEMPDData& _OUT entity)
{
    return m_repository.FindByIndex (index, entity);
}
SG::DataStructure::Common::Status TEMPDService::FindBySId (const SG::DataStructure::Common::Id                  sId,
                                                           std::vector<SG::DataStructure::FEM::TEMPDData>& _OUT mpcSet)
{
    mpcSet.clear ();
    mpcSet.resize (1);
    return m_repository.FindBySId (sId, mpcSet);
}
